gtk-demo: Clean up memory handling in the weather demo
authorMatthias Clasen <mclasen@redhat.com>
Sat, 20 Jun 2020 16:18:17 +0000 (12:18 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 20 Jun 2020 16:18:17 +0000 (12:18 -0400)
gtk_weather_info_new was consuming the info, but not
the timestamp, which confused me. Make it not consume
either, and be more explicit about where the unrefs
happen.

demos/gtk-demo/listview_weather.c

index c373e436865dfe9721ca2b161aaaa32000293a3e..4fa83721f47ba994573a9901e3f72c98441d135d 100644 (file)
@@ -70,7 +70,6 @@ gtk_weather_info_new (GDateTime      *timestamp,
     {
       result->temperature = copy_from->temperature;
       result->weather_type = copy_from->weather_type;
-      g_object_unref (copy_from);
     }
 
   return result;
@@ -161,6 +160,7 @@ create_weather_model (void)
   timestamp = g_date_time_new (utc, 2011, 1, 1, 0, 0, 0);
   info = gtk_weather_info_new (timestamp, NULL);
   g_list_store_append (store, info);
+  g_object_unref (info);
 
   for (i = 0; lines[i] != NULL && *lines[i]; i++)
     {
@@ -176,6 +176,7 @@ create_weather_model (void)
           timestamp = new_timestamp;
           info = gtk_weather_info_new (timestamp, info);
           g_list_store_append (store, info);
+          g_object_unref (info);
         }
 
       info->temperature = parse_temperature (fields[1], info->temperature);
@@ -184,6 +185,7 @@ create_weather_model (void)
       g_strfreev (fields);
     }
 
+  g_date_time_unref (timestamp);
   g_strfreev (lines);
   g_bytes_unref (data);
   g_time_zone_unref (utc);